<?php

/**
 * @SWG\Resource(
 *  resourcePath="/file",
 *  description="文件管理"
 * )
 */
Route::group([
    'prefix' => 'api'
],function() {
    /**
     *
     * @SWG\Api(
     *   path="/file",
     *   @SWG\Operation(
     *      method="POST",
     *      nickname="FileUpload",
     *      summary="上传文件",
     *      notes="在所有接口中使用到文件ID，都由此接口得到。（注意使用文件上传方式 enctype=&quot;multipart/form-data&quot; ）",
     *      type="UserFile",
     *      @SWG\Parameters(
     *          @SWG\Parameter(
     *              name="user_id",
     *              description="UID",
     *              paramType="query",
     *              required=false,
     *              type="integer"
     *          ),
     *          @SWG\Parameter(
     *              name="token",
     *              description="Token",
     *              paramType="query",
     *              required=false,
     *              type="string"
     *          ),
     *          @SWG\Parameter(
     *              name="body",
     *              description="文件",
     *              paramType="body",
     *              required=true,
     *              type="file"
     *          )
     *      ),
     *      @SWG\ResponseMessages(
     *          @SWG\ResponseMessage(code=401, message="尚未登录。"),
     *          @SWG\ResponseMessage(code=402, message="表单验证失败。"),
     *          @SWG\ResponseMessage(code=200, message="成功。")
     *      )
     *   )
     * )
     */
    Route::post('file', [
        'as' => 'FileUpload',
        'uses' => 'StorageController@postFile'
    ]);

    /**
     *
     * @SWG\Api(
     *   path="/file",
     *   @SWG\Operation(
     *      method="GET",
     *      nickname="FilePull",
     *      summary="获取文件",
     *      notes="根据文件ID取得指定文件。如果文件是图片，支持获取指定宽高的缩略图。",
     *      @SWG\Parameters(
     *          @SWG\Parameter(
     *              name="id",
     *              description="文件ID",
     *              paramType="query",
     *              required=true,
     *              type="integer"
     *          ),
     *          @SWG\Parameter(
     *              name="width",
     *              description="宽度",
     *              paramType="query",
     *              type="integer"
     *          ),
     *          @SWG\Parameter(
     *              name="height",
     *              description="高度",
     *              paramType="query",
     *              type="integer"
     *          ),
     *          @SWG\Parameter(
     *              name="water",
     *              description="是否水印(1是)",
     *              paramType="query",
     *              type="integer"
     *          )
     *      ),
     *      @SWG\ResponseMessages(
     *          @SWG\ResponseMessage(code=404, message="文件不存在。"),
     *          @SWG\ResponseMessage(code=200, message="成功。")
     *      )
     *   )
     * )
     */
    Route::get('file', [
        'as' => 'FilePull',
        'uses' => 'StorageController@getFile'
    ]);

    /**
     *
     * @SWG\Api(
     *   path="/file-hash",
     *   @SWG\Operation(
     *      method="POST",
     *      nickname="FileUploadWithHash",
     *      summary="文件秒传",
     *      notes="本地先计算文件MD5，将此作为hash提交到服务器。如果hash指定的文件在服务器上已存在，则触发秒传成功上传文件，若不存在，则需要调用上传文件接口上传原文件。",
     *      type="UserFile",
     *      @SWG\Parameters(
     *          @SWG\Parameter(
     *              name="hash",
     *              description="文件hash",
     *              paramType="query",
     *              required=true,
     *              type="string"
     *          ),
     *          @SWG\Parameter(
     *              name="filename",
     *              description="文件名",
     *              paramType="query",
     *              required=true,
     *              type="string"
     *          )
     *      ),
     *      @SWG\ResponseMessages(
     *          @SWG\ResponseMessage(code=401, message="尚未登录。"),
     *          @SWG\ResponseMessage(code=402, message="表单验证失败。"),
     *          @SWG\ResponseMessage(code=200, message="成功。")
     *      )
     *   )
     * )
     */
    Route::post('file-hash', [
        'as' => 'FileUploadWithHash',
        'uses' => 'StorageController@postFileWithHash'
    ]);
});
